package DyingBaby.demo;

import DyingBaby.backend.common.InteractiveCacheConfig;
import DyingBaby.backend.dm.pageCache.PageCache;
import DyingBaby.backend.dm.pageCache.PageCacheImpl;
import java.io.File;

/**
 * 交互式缓存配置演示程序
 */
public class InteractiveDemo {
    
    public static void main(String[] args) {
        try {
            // 创建临时测试文件
            File testFile = File.createTempFile("interactive_demo", ".db");
            testFile.deleteOnExit();
            
            // 先删除可能存在的文件
            if (testFile.exists()) {
                testFile.delete();
            }
            
            System.out.println("=== 交互式缓存配置演示 ===");
            
            // 创建页面缓存
            PageCacheImpl pageCache = PageCache.create(testFile.getAbsolutePath().replace(".db", ""), 80 * 1024);
            
            // 演示1: 默认交互模式
            System.out.println("\n1. 默认交互模式演示:");
            System.out.println("交互模式: " + (InteractiveCacheConfig.isInteractiveEnabled() ? "启用" : "禁用"));
            
            // 进行一些操作
            int page1 = pageCache.newPage("Page 1 data".getBytes());
            int page2 = pageCache.newPage("Page 2 data".getBytes());
            pageCache.getPage(page1);
            pageCache.getPage(page2);
            
            // 模拟SQL执行后的交互式询问
            System.out.println("\n模拟SQL执行完成...");
            pageCache.showInteractiveStats();
            
            // 演示2: 禁用交互模式
            System.out.println("\n2. 禁用交互模式演示:");
            InteractiveCacheConfig.setInteractiveEnabled(false);
            InteractiveCacheConfig.setDefaultChoice(true); // 默认显示统计
            
            System.out.println("交互模式: " + (InteractiveCacheConfig.isInteractiveEnabled() ? "启用" : "禁用"));
            System.out.println("默认选择: " + (InteractiveCacheConfig.getLastChoice() ? "显示" : "不显示"));
            
            pageCache.getPage(page1);
            System.out.println("\n模拟SQL执行完成（交互模式禁用，使用默认选择）...");
            pageCache.showInteractiveStats();
            
            // 演示3: 重新启用交互模式
            System.out.println("\n3. 重新启用交互模式演示:");
            InteractiveCacheConfig.setInteractiveEnabled(true);
            
            System.out.println("交互模式: " + (InteractiveCacheConfig.isInteractiveEnabled() ? "启用" : "禁用"));
            
            pageCache.getPage(page2);
            System.out.println("\n模拟SQL执行完成（交互模式启用）...");
            pageCache.showInteractiveStats();
            
            pageCache.close();
            
            System.out.println("\n=== 演示完成 ===");
            System.out.println("现在您的数据库支持交互式缓存统计显示！");
            System.out.println("每次执行SQL后，系统会询问是否查看缓存统计信息。");
            
        } catch (Exception e) {
            System.err.println("演示失败: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
